/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package continuity;

import java.io.IOException;

/**
 *
 * @author FornetTeam
 */
public abstract class Element {
    /**
     * Léphet-e ide a karakter
     */
    protected boolean canMove=false;
    /**
     * A Game osztály megfelelő függvényeit hívhatja meg ezen az interfészen keresztül.
     */
    protected Communication game;
    /**
     * Az elemet tartalmazó mező
     */
    protected Node parent;
    
    /**
     * 
     * @param game A Game osztály megfelelő függvényeit hívhatja meg ezen keresztül
     */
    public Element(Communication game) {
        this.game=game;
    }
    
    /**
     * Az adott elem node-ján tartózkodhat-e a karakter
     * @return A karakter léphet-e erre a mezőre.
     */
    public boolean canIsHere() {      
        /**
         * Ha mozoghat, akkor igaz
         * a visszatérési érték, 
         * egyébként hamis.
         */
        return canMove;
    }
    
    /**
     * Az adott elem csinál valamit, attól függően, hogy micsoda, és a karakter pedig odalépett
     */
    public abstract void doSomething();
    
    /**
     * Az elemet tartalmazó mező beállítása
     * @param parent Az új Node, amelyre állítjuk
     */
    public void setParent(Node parent) {
        this.parent=parent;
    }
    
    /**
     * 
     * @return Szövegesen megjeleníti milyen fajta elemet tartalmaz az objektum
     */
    @Override
    public abstract String toString(); //LEírásból lemaradt?!
}